Slicing Distributed Programs
نویسنده
چکیده
– Instead of defining both Ctl formulas and least fixed point computation algorithms, program slicing can be described as a μ-calculus formula [11] only. This greatly simplifies the definition of existing classes of program slicing (backward/forward/chopping, static/dynamic/hybrid/conditioned, syntaxpreserving/amorphous) in a unified and concise framework. Due to its capability of defining both state and action predicates (instead of only state predicates in the case of Ctl formulas) together with fixed point operators, μ-calculus formulas can limit the scope of interest while inspecting the abstract state graph, thus allowing the definition of more precise slicing techniques. The μ-calculus logic presents additional advantages. On one hand, the different slicing methods can be mapped to property patterns that commonly occurs in the specification of concurrent and reactive systems. There exists such property pattern mappings for μ-calculus [12] that can be applied to the different slicing problems. On the other hand, μ-calculus acts as an assembly language with tool support adapted to the construction with rapid testing of new slicing techniques. In the case of alternation-free μ-calculus formulas, model checkers, like in the verification toolbox Cadp [6], can solve them with various linear time complexity algorithms, that generate minimal diagnostic examples representing the program slices. – Symbolic model checkers are not currently capable to find the set of states satisfying formulas using backward modalities, which are the overlined possibility (i.e., − 3) and necessity (i.e., − 2) operators used to define forward slicing techniques. One solution is to use explicit model checkers, like Gear [3], which can evaluate μ-calculus formulas with backward 2 and 3 operators. Another solution is to specify the slicing problem at a lower level, using Boolean equation systems (Bess) [2]. Forward data-flow analyses, represented as μ-calculus formulas with backward operators [13], can be trans-
منابع مشابه
An Overview of Slicing Techniques for Object-Oriented Programs
This paper surveys the existing slicing techniques for object-oriented programs. Many commercial objectoriented programs are concurrent in nature. Concurrency is typically implemented in the form of multithreading or message passing using sockets or both. We therefore review the available techniques in slicing of concurrent object-oriented programs. Another trend that is clearly visible in obje...
متن کاملDistributed Data and Programs Slicing
This paper presents a new technique for data slicing of distributed programs running on a hierarchy of machines. Data slicing can be realized as a program transformation that partitions heaps of machines in a hierarchy into independent regions. Inside each region of each machine, pointers preserve the original pointer structures in the original heap hierarchy. Each heap component of the base ty...
متن کاملDistributed Slicing and Partial Re-execution for Distributed Programs
Sofia Abstract We present a parallel algorithm to compute dynamic slices for distributed programs. Dynamic slices are used in debugging to re-execute only those statements of the original program that actually influenced an observed erroneous result. We introduce the notion of a Distributed Dependence Graph (DDG) as the graphical representation of the relevant dependencies among statements that...
متن کاملA parallel algorithm for dynamic slicing of distributed Java programs in non-DSM systems
We propose a parallel algorithm for dynamic slicing of distributed Java programs in non-Distributed Shared Memory (DSM) systems. Given a distributed Java program, we first construct an intermediate representation in the form of a Distributed Program Dependence Graph (DPDG). We mark and unmark the edges of the DPDG appropriately as and when dependencies arise and cease during run-time. Our algor...
متن کاملOn Slicing a Distributed Computation
We introduce the notion of a slice of a distributed computation. A slice of a distributed computation with respect to a global predicate is a computation which captures those and only those consistent cuts of the original computation which satisfy the global predicate. We show that a slice exists for a global predicate iff the predicate is a regular predicate. We then give an efficient algorith...
متن کاملDynamic Slicing of Concurrent Programs : Where are We and Where is the Right Way ? ( Extended
Program slicing has been developed as a standard technique used in various software engineering activit ies including program understanding, testing, debugging, maintenance, and complexity measurement. Although both static and dynamic slicing of sequential programs have been applied to software engineering practices, there still are some challenges, problems and issues in slicing concurrent pro...
متن کامل